草庐IT

c++ - Lua C++ 表迭代

全部标签

c++ - 在 gdb 中显示取消引用的 STL 迭代器

我有一个映射元素的迭代器,我希望gdb向我显示该迭代器的“第一个”和“第二个”元素的值。例如:std::mapaMap;...fillmap...std::map::const_iteratorp=aMap.begin();我可以在代码中使用p.first和p.second,但在gdb中看不到它们。对于它的值(value),在dbx中可以执行“printp.node.second_”之类的操作,但我可以在gbd中找到类似的内容。我完全愿意有一个函数来传递对象类型,但我也无法让它工作。有什么想法吗?谢谢! 最佳答案 这是我的做法:Th

类似 C++ LINQ 的迭代器操作

被Linq污染了,舍不得放弃。但是,对于某些事情,我只需要使用C++。linq作为linq消费者(即对我而言)的真正优势不在于表达式树(操作起来很复杂),而在于我可以轻松混合和匹配各种功能。执行.Where、.Select和.SelectMany、.Skip和.Take和.Concat是否存在用于C++样式的迭代器?这些对于我编写的各种常见代码都非常方便。我不关心LINQ的细节,这里的关键问题是能够在更高级别表达算法,而不是让C++代码看起来像C#3.0。我希望能够表达“结果是由连接每个序列的前n个元素形成的”,然后在需要新序列的地方重用这样的表达式-无需手动(并且贪婪地)实例化中间体

c++ - "Generic"C++ 中的迭代器

我有:voidadd_all_msgs(std::deque::iterator&iter);如何使该函数“通用”,以便它可以采用任何类型的输入迭代器?我真的不在乎它是否在迭代双端队列、vector或其他东西,只要迭代器正在迭代消息。-这在C++中是不是很简单? 最佳答案 templatevoidadd_all_messages(Iteratorfirst,Iteratorlast)用法:vectorv;add_all_messages(v.begin(),v.end());你需要指定结束,否则你不知道什么时候停止!它还为您提供了仅

c++ - 迭代多个序列。 C++11 中的容器

对于以下情况,我需要一条建议-我好几个小时都想不通:如何遍历多个seq。以简单的方式具有相同大小的容器(此处:两个vector)?intmain(){intsize=3;std::vectorv1{1,2,3},v2{6,4,2};//old-fashioned-okfor(inti=0;i谢谢! 最佳答案 有boost::combine()在Boost.Range允许一个人写#include#include#include#includeintmain(){std::vectorv1{1,2,3},v2{6,4,2};for(au

c++ - 在数组索引上使用迭代器

我只是想知道在数组索引上使用迭代器的主要优势是什么。我已经用谷歌搜索了,但我没有得到正确的答案。 最佳答案 我想您是在谈论使用vector时,对吧?主要优点是迭代器代码适用于所有STL容器,而数组索引运算符[]仅适用于vector和双端队列。这意味着您可以根据需要自由更改底层容器,而无需重新编码每个循环。这也意味着您可以将迭代代码放在模板中,它适用于任何容器,而不仅仅是双端队列和vector(当然还有数组)。 关于c++-在数组索引上使用迭代器,我们在StackOverflow上找到一个

c++ - 如何访问 C++ 列表迭代器循环中的 'previous' 元素?

我正在尝试在遍历列表的所有元素的循环中访问先前迭代的元素。更具体地说,我的循环如下所示:for(iter=list_object.begin();iter!=list_object_.end();iter++){function_1(*iter);function_2(*PREVIOUS_VALUE_IN_THE_LIST);}如何访问列表中的前一个值? 最佳答案 一种简单的方法是简单地跟踪for循环中的前一个元素,例如:for(list_t::iteratoriter=obj.begin(),prev=obj.end();iter

c++ - 在 for-each 循环中删除 vector 的一些元素而不迭代整个 vector

我有一个vector,我正在搜索其中的一个元素,同时使用for-each循环遍历该vector。如果我在搜索过程中发现任何无效元素,我想将它们从vector中删除。基本上,我想做这样的事情:for(autoel:vec){if(el==whatImLookingFor){returnel;}elseif(isInvalid(el)){vec.erase(el);}}我查看了一些其他问题,例如this和this,但两者都推荐使用std::remove_if。这将遍历整个vector并删除所有无效元素,而不是仅在找到我要查找的元素之前进行迭代,然后忽略之后的任何元素。什么是这样做的好方法?

c++ - 迭代结构;在 RichEdit 框中轻松显示结构字段和值

有没有更简单的方法在RichEdit控件中显示struct字段及其对应的值?这就是我现在正在做的事情:AnsiStrings;s=IntToStr(wfc.fontColor);RichEdit1->Lines->Append(s);等等……有没有比必须单独调用每个人更简单的方法?我想读取一个二进制文件,然后在RichEdit控件中为我正在构建的一个小实用程序显示相应的结构,但没有找到其他方法。我已经知道如何读取二进制文件并将值读入struct。 最佳答案 BOOST_FUSION_ADAPT_STRUCT似乎很适合这里。例如://

c++ - 将 STL 容器与迭代器一起使用的常见误用是什么?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭11年前。STL的常见误用有哪些?带有迭代器的容器? 最佳答案 忘记如果您通过插入或删除容器成员来更改容器,迭代器通常会失效。对于使用STL的许多重要提示,我强烈推荐ScottMeyers的书“EffectiveSTL”(sanitisedAmazonlink)

c++ - 创建库以覆盖迭代器的 operator*() - 风险悬空指针

我正在尝试创建自己的boost::adaptors::transformed.这里是相关的boostcode.这是它的用法(从aSOanswerbyLogicStuff修改):-CfuncPointer(B&b){//"funcPointer"isfunctionconvertfrom"B"to"C"returninstance-of-C}MyArraytest;//结果将与以下内容相同:-for(autob:test){Cc=funcPointer(b);//...something...}我的尝试我创建了CollectAdapter旨在像boost::adaptor::transf